home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / misc / gfront11.lha / GUIFront / Demos / Source / person2.c < prev    next >
C/C++ Source or Header  |  1994-11-01  |  5KB  |  162 lines

  1.  
  2. /* Person.c - Personal data entry form for an employee
  3.  *
  4. /* This is a GUIFront example GUI. To build an example, compile and link this
  5.  * file with Generic.o (also supplied).
  6.  * Everything prefixed with DEMO_ is exported to Generic.o.
  7.  */
  8.  
  9. #include <libraries/guifront.h>
  10.  
  11. /* This example is exactly like person.c, only we've added some frames to make
  12.  * it look better
  13.  */
  14.  
  15. /* First, some Gadget ID's */
  16.  
  17. enum
  18. {
  19.     GID_NAME,
  20.     GID_ADDRESS,
  21.     GID_ZIP,
  22.     GID_CITY,
  23.     GID_PHONE,
  24.     GID_DEPARTMENT,
  25.     GID_AGE,
  26.     GID_SEX,
  27.     GID_COLOR,
  28. };
  29.  
  30. /* Some data and tag items we'll be needing later */
  31.  
  32. static const STRPTR deptcyclelabels[] =
  33. {
  34.     "New York",
  35.     "Sydney",
  36.     "Rio",
  37.     "Hamburg",
  38.     "Copenhagen",
  39.     NULL,
  40. };
  41.  
  42. static const struct TagItem deptcycletags[] =
  43. {
  44.     {GTCY_Labels, deptcyclelabels},
  45.     {TAG_DONE},
  46. };
  47.  
  48. static const STRPTR sexmxlabels[] =
  49. {
  50.     "_Male",
  51.     "_Female",
  52.     NULL
  53. };
  54.  
  55. static const struct TagItem sexmxtags[] =
  56. {
  57.     {GTMX_Labels, sexmxlabels},
  58.     {GTMX_TitlePlace, PLACETEXT_ABOVE},
  59.     {TAG_DONE},
  60. };
  61.  
  62. static const struct TagItem colortags[] =
  63. {
  64.     {GTPA_Depth, 2},
  65.     {TAG_DONE},
  66. };
  67.  
  68. /* Now, the GadgetSpec's we'll be needing for this GUI */
  69.  
  70. static GadgetSpec gadgetspecs[] =
  71. {
  72.     {STRING_KIND, 20,0, {0,0,0,0,"_Name:",      NULL,GID_NAME,PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  73.     {STRING_KIND, 20,0, {0,0,0,0,"_Address:",   NULL,GID_ADDRESS,PLACETEXT_LEFT}, NULL, GS_DefaultTags},
  74.     {STRING_KIND,  4,0, {0,0,0,0,"_Zip:",       NULL,GID_ZIP,PLACETEXT_LEFT},NULL,GS_DefaultTags | GS_NoWidthExtend},
  75.     {STRING_KIND,  0,0, {0,0,0,0,"_City:",      NULL,GID_CITY,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  76.     {STRING_KIND,  0,0, {0,0,0,0,"_Phone:",     NULL,GID_PHONE,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  77.     {CYCLE_KIND,   0,0, {0,0,0,0,"_Department:",NULL,GID_DEPARTMENT,PLACETEXT_LEFT},deptcycletags,GS_DefaultTags},
  78.     {STRING_KIND,  0,0, {0,0,0,0,"A_ge:",       NULL,GID_AGE,PLACETEXT_LEFT},NULL,GS_DefaultTags},
  79.     {MX_KIND,      0,0, {0,0,0,0, NULL,        NULL,GID_SEX,PLACETEXT_RIGHT},sexmxtags,GS_DefaultTags},
  80.     {PALETTE_KIND,10,0, {0,0,0,0,"Fa_vourite color:",NULL,GID_COLOR,PLACETEXT_LEFT},colortags,GS_DefaultTags},
  81. };
  82.  
  83. /* Now, we group all of these GadgetSpecs into an array of pointers, so the
  84.  * layout engine can locate gadgets merely by their Gadget IDs.
  85.  */
  86.  
  87. GadgetSpec *DEMO_GadgetSpecList[] =
  88. {
  89.     &gadgetspecs[0], &gadgetspecs[1], &gadgetspecs[2], &gadgetspecs[2],
  90.     &gadgetspecs[3], &gadgetspecs[4], &gadgetspecs[5], &gadgetspecs[6],
  91.     &gadgetspecs[7], &gadgetspecs[8], NULL,
  92. };
  93.  
  94. /* Finally, the layout tag list itself. This is where most of the work is
  95.  * done. This list completely describes how the above gadgets are arranged
  96.  * in groups in the GUI.
  97.  */
  98.  
  99. ULONG DEMO_LayoutList[] =
  100. {
  101.     GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth,
  102.  
  103.     GUIL_VertGroup, 1,
  104.         GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  105.  
  106.         GUIL_FrameType, GUILFT_Ridge,
  107.         GUIL_FrameHeadline, "Employee",
  108.  
  109.         GUIL_GadgetSpecID, GID_NAME,
  110.         GUIL_GadgetSpecID, GID_ADDRESS,
  111.  
  112.         GUIL_HorizGroup, 1,
  113.             GUIL_Flags, GUILF_PropShare | GUILF_EqualHeight,
  114.             GUIL_GadgetSpecID, GID_ZIP,
  115.             GUIL_GadgetSpecID, GID_CITY,
  116.         TAG_DONE,
  117.  
  118.         GUIL_GadgetSpecID, GID_DEPARTMENT,
  119.     TAG_DONE,
  120.  
  121.     GUIL_HorizGroup, 1,
  122.         GUIL_Flags, GUILF_PropShare,
  123.  
  124.         GUIL_FrameType, GUILFT_Recess,
  125.         GUIL_FrameHeadline, "Personal Data",
  126.  
  127.         GUIL_VertGroup, 1,
  128.             GUIL_Flags, GUILF_PropShare | GUILF_EqualWidth | GUILF_LabelAlign,
  129.             GUIL_GadgetSpecID, GID_AGE,
  130.             GUIL_GadgetSpecID, GID_COLOR,
  131.         TAG_DONE,
  132.  
  133.         GUIL_GadgetSpecID, GID_SEX,
  134.     TAG_DONE,
  135.  
  136.     TAG_DONE,
  137. };
  138.  
  139. /* Obligatory version tag */
  140.  
  141. static const char ver[] = "$VER: Person2 1.0 " __AMIGADATE__;
  142.  
  143. /* Now, some globals used by Generic.o during the call to GF_CreateGUIA() */
  144.  
  145. /* The initial orientation of the GUI. In this case, it's vertical. This means
  146.  * the three button gadgets, which we just grouped together, will be placed
  147.  * in a vertical group. Alternatively, we could have used GUIL_HorizGroup
  148.  * to make the initial orientation horizontal (surprise :-)
  149.  */
  150.  
  151. int DEMO_InitialOrientation = GUIL_VertGroup;
  152.  
  153. STRPTR DEMO_WindowTitle = "Person GUI (2)";
  154. STRPTR DEMO_AppID       = "Person2";
  155.  
  156. STRPTR DEMO_Version     = "1.0",
  157.        DEMO_LongDesc    = "Demo program - Personal data entry (2)",
  158.        DEMO_Author      = "Michael Berg",
  159.        DEMO_Date        = __AMIGADATE__;
  160.  
  161. BOOL   DEMO_Backfill    = FALSE;
  162.